草庐IT

Java BufferedImage 内存消耗

全部标签

java - 最大 jvm 堆的大小未达到或接近机器上的最大物理内存的原因是什么?

我有一台64位机器,理论上地址空间是2^64字节,它有32G的物理RAM。这是一台具有16个内核的服务器级机器,是一台生产服务器。既然没有其他消耗大量内存的进程在运行,并且服务器jvm是唯一正在运行的应用程序,是否有任何理由不将jvm堆设置为非常大的数字?我看到它被设置为少于10场演出,但没有任何我能想到的解释。正如我之前在帖子中提到的:我知道内核、缓存和其他进程需要共享RAM。但是除了任何其他进程和操作系统原生的东西,没有其他事情发生。这台机器是一台生产机器,专门用于这个特定的jvm。是否有任何理由不设置为20gigs/32g(物理内存)?从下面的评论来看——似乎不是……除了需要快速

java - java : too many questions? 中的内存映射文件

内存映射文件(根据规范)在很大程度上取决于操作系统的实际实现,其中许多未知方面已经在javadoc中进行了解释。但是,我还有一些其他问题,但不确定到哪里寻求答案。假设应用程序A将文件映射到从position=0到size=10的内存。我假设操作系统需要一block连续的内存来映射它?还是这取决于实现?现在假设我们有一个从position=0映射到size=11的applicationB。前10个字节是共享的还是完全不同的映射?这与连续内存问题有关。如果我们想使用映射文件进行IPC,我们需要知道数据在其他应用程序中是如何反射(reflect)的,所以如果B写入内存,A是否看到这个?然而,

带有 ConcurrentLinkedQueue$Node 的 Java 内存 "Leak"

我遇到了一个有趣的难题,我似乎有内存泄漏(或不断增长的数据结构)。当我分析我的内存使用情况时,我得到了典型的“随时间线性增加”的图表。为了找出问题的原因,我进行了堆转储。我发现超过50%的内存分配给ConcurrentLinkedQueue节点。内存消耗最大的是com.singularity.ee.agent.util.ch和java.util.concurrent.ConcurrentLinkedQueue$Node,如下图所示。我不知道util.ch是什么,但它似乎与节点相关联,因为每个ch都有一个对节点的直接引用,所以不用担心关注它。现在尝试为$Node查找最近的GC的引用,我得

java - HtmlUnit 关闭所有窗口内存泄漏

HtmlUnit似乎不会关闭网络客户端中的窗口,从而造成内存泄漏。我正在尝试使用HtmlUnit获取一个页面并将其传递给JSoup进行解析。我知道JSoup可以连接到一个页面,但我需要使用这种方法,因为我需要在解析它们之前在某些站点上保持登录session。代码如下:importjava.io.IOException;importjava.net.MalformedURLException;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importcom.gargoylesoftware.htmlunit.BrowserVer

java - Gradle Proguard 优化时出现大量内存错误

我为我的Java应用程序运行./gradlewproguard--debug来检查为什么它没有在数小时内完成,这就是我所看到的:17:14:11.431[INFO][system.out]Optimizing...17:14:13.537[DEBUG][org.gradle.process.internal.health.memory.MemoryManager]EmittingOSmemorystatusevent{Total:8589934592,Free:2029916160}17:14:13.538[DEBUG][org.gradle.launcher.daemon.serve

java - 在 JTextPane 中插入一些字符会导致性能问题和内存泄漏

我的聊天客户端有一个JTextPane,其中插入了文本,每秒最多可以插入几行。它通常可以正常工作,即使是更长的时间(例如一个小时),但有时它会变得非常慢,使用大量CPU和内存,有时高达1GB并且几乎完全卡住。我添加了“-Xrunhprof:heap=sites”参数来找出正在使用内存的内容以及我可以收集的内容,它与文本渲染有关,尽管我不太了解这些东西,所以它更多一个有根据的猜测。这是结果的一部分,在内存使用率异常高时拍摄。我在每个条目下都包含了适当的跟踪。其他堆转储看起来略有不同,但它总是指向相同或相似的类(名称中带有Glyph)。不确定如何正确解释这一点,以及它是否真的有助于解决这个

java - 以低内存消耗在 Java 中调整图像大小

ImageMagick的“转换”命令行工具允许您在执行操作时指定内存使用限制。我想找到一个提供相同选项的Java图像大小调整库。我的应用程序有时会得到非常大的JPEG,需要将它们缩减到合理的大小。例如,一个11600x5152的图像将消耗大约227MB的内存,只是解压缩它;调整大小的过程最终会使用比这更多的东西。在Java中,有没有一种方法可以将非常大的图像调整到合理的大小,而无需在内存中解压缩整个图像? 最佳答案 我认为这个主题已经在某种程度上进行了讨论:Whatisthebestjavaimageprocessinglibrar

Java - x32 和 x64 之间的奇数内存消耗

我一直在分析我的应用程序的x64版本,因为内存使用率高得离谱,所有这些似乎都来自JavaFXMediaPlayer,我正确地释放了监听器和事件处理程序。这是一个鲜明的对比。开始时的x32版本现在开始时是x64版本x32版本保持在256mb以下,而x64将超过演出;这是两人都在播放他们的播放列表的时候。所有的代码都是一样的。JDK:jdk1.8.0_20JRE:jre1.8.0_20两者的VM参数-XX:MinHeapFreeRatio=40-XX:MaxHeapFreeRatio=70-Xms3670k-Xmx256m-Dsun.java2d.noddraw=true-XX:+UseP

java - 是否可以按池检查堆内存使用情况?

我一直致力于优化一个有很多内存泄漏问题的程序。泄漏现在已经消失,但主要GC的偶尔运行仍然对PSoldgen产生了很大的影响。我知道我可以通过运行时检查基本的整体内存信息,但是是否可以从程序中检查PSeden、PSsurvivor和PSold中的使用情况? 最佳答案 这个article可以帮助你您可以编写自定义代码来分析内存,输出将采用以下形式collectiontime:82037collectioncount:116PSSurvivorSpace:init=1703936(1664K)used=65536(64K)committe

java - 尽管 RAM 显示 6 GB 可用空间,但 Java 运行时环境的内存不足无法继续

在运行java应用程序时,我得到以下内存转储。安装java8后(之前java7应用程序可以运行)我开始收到以下错误。我使用的是16GB内存,当我在任务管理器中检查时(在应用程序启动时)大约有6GB内存可用。有人可以帮忙解决问题吗?##ThereisinsufficientmemoryfortheJavaRuntimeEnvironmenttocontinue.#Nativememoryallocation(malloc)failedtoallocate472736bytesforChunk::new#Possiblereasons:#ThesystemisoutofphysicalRA